/*
* 作者: wupengxin
* 创建时间: 2016年08月27日10:19:07
* 说明: 这个是标准输出插件
*/
package outputplug

import (
	"time"
	"errors"
	"common"
	//"os"
	"fmt"
)

type StdOut struct {
	Time time.Time
	Message string
	Debug bool
}

func (std *StdOut)loadConf(conf map[string]string) error{
	if v, ok := conf["debug"]; !ok{
		std.Debug = true
	} else {
		if v == "true"{
			std.Debug = true
		}else {
			std.Debug = false
		}
	}
	return nil
}

func (std *StdOut)print(ch chan map[string]string){
	for{
		contant, ok := <- ch
		if !ok{
			// 对方关闭了通道 退出打印
			break
		}
		//os.Stdin.WriteString(contant)
		//os.Stdin.WriteString("\n")
		//println(contant["contant"])
		fmt.Println(contant)
	}
}

func (std *StdOut)PutOutStream(conf map[string]string, channels []chan map[string]string)  error{
	// 读取配置
	e := std.loadConf(conf)
	if e!=nil{
		common.Debug(e)
		return e
	}
	// 为多个通道创建协程
	for _, ch := range channels{
		if ch == nil{
			return errors.New("chan is nil ")
		}
		go std.print(ch)
	}
	return nil
}

func (std *StdOut)ConfigPlus(conf interface{}) (map[string]string, error){
	dat := conf.(map[string]interface{})
	tmp := make(map[string]string)
	if v, ok := dat["debug"]; ok{
		tmp["debug"] = v.(string)
	} else {
		tmp["debug"] = "true"
	}
	return tmp, nil
}